﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VSShellInterop = Microsoft.VisualStudio.Shell.Interop;
using VSShell = Microsoft.VisualStudio.Shell;
using DslShell = Microsoft.VisualStudio.Modeling.Shell;
using DslDesign = Microsoft.VisualStudio.Modeling.Design;
using VSTextTemplatingHost = Microsoft.VisualStudio.TextTemplating.VSHost;
using UofCASE.AgileProductLinerDSL.Confeaturator;
using Microsoft.VisualStudio.Shell;
using System.ComponentModel.Design;
using Microsoft.VisualStudio.ComponentModelHost;
using UofCASE.GreenPepe.Extensibility;
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.ExtensibilityHosting;
using System.ComponentModel.Composition.Hosting;
using System.Windows;
using UofCASE.AgileProductLinerDSL.Exceptions;


namespace UofCASE.AgileProductLinerDSL {
    /// <summary>
    /// The AgileProductLinerDSL Package
    /// </summary>
    [VSShell::ProvideToolWindowVisibility(typeof(ConfeaturatorToolWindow),
             Constants.AgileProductLinerDSLEditorFactoryId)]
    [VSShell::ProvideToolWindow(typeof(ConfeaturatorToolWindow),
              MultiInstances = false,
              Style = VSShell::VsDockStyle.Tabbed,
              Orientation = VSShell::ToolWindowOrientation.Left,
              //Window = "{3AE79031-E1BC-11D0-8F78-00A0C9110057}")]
              Window = "{B1E99781-AB81-11D0-B683-00AA00A3EE26}")]
    internal partial class AgileProductLinerDSLPackage {

        private static GreenPepeConnector greenPepeConnector;

        protected override void Initialize() {
            base.Initialize();
            DTEHelper.Initialize(this);
            InitGreenPepeConnector();
                    
            this.AddToolWindow(typeof(ConfeaturatorToolWindow));
            this.GetToolWindow(typeof(ConfeaturatorToolWindow), true);
        }

        private void InitGreenPepeConnector() {
            greenPepeConnector = new GreenPepeConnector();
        }

        public static GreenPepeConnector GreenPepeConnector {
            get {
                return greenPepeConnector;
            }
        }
        

    }
}
